package com.yidu.ladder.base.service.impl;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.yidu.ladder.base.dao.ArchivesDao;
import com.yidu.ladder.base.domain.ArchiveVo;
import com.yidu.ladder.base.domain.Archives;
import com.yidu.ladder.base.service.ArchivesService;
import com.yidu.ladder.util.IDGenerator;


/**
 * 基础档案业务层实现类
 * @author bamboo
 *
 */
@Service
public class ArchivesServiceImpl implements ArchivesService{
	@Autowired
	private ArchivesDao archivesDao;
	
	/**
	 * 得到基础档案Dao
	 * @return 基础档案Dao
	 */
	public ArchivesDao getArchivesDao() {
		return archivesDao;
	}
	/**
	 * 设置基础档案Dao
	 * @param archivesDao 基础档案Dao
	 */
	public void setArchivesDao(ArchivesDao archivesDao) {
		this.archivesDao = archivesDao;
	}
	
	@Override
	public Map<String, Object> queryArchiveWithPage(ArchiveVo archivesVo) {
		//设置页面
		archivesVo.setPage((archivesVo.getPage() - 1) * archivesVo.getLimit());
		//调用Dao层方法分页查询
		List<Archives> list = archivesDao.queryArchiveWithPage(archivesVo);
		//每次查询得到相应的记录数
		int count = archivesDao.countArchives(archivesVo);
		//创建一个Map接收数据返回给前端
		Map<String, Object> map = new HashMap<String, Object>();
		//map存放code
		map.put("code", 0);
		//map存放count
		map.put("count", count);
		//map存放数据
		map.put("data",list);
		//返回一个map
		return map;
	}


	@Override
	public boolean saveArchives(Archives archives) {
		//为新增的基础档案设置ID
		archives.setArchivesId(IDGenerator.getId());
		//添加时是否可用字段都为是
		archives.setUseable("Y");
		//设置添加的当前时间
	    archives.setCreateTime(new Date());
		//调用dao层添加的方法
		return archivesDao.addArchives(archives)== 1?true :false;
	}


	@Override
	public boolean updateArchives(Archives archives) {
		//修改基础档案，如果等于1就返回true，否则返回false
		return archivesDao.updateArchives(archives) == 1?true :false;
	}

	@Override
	public boolean frozenOrRecoveArchives(String archivesId, String flag) {
		//创建传参的Map集合
		Map<String, Object> paramMap = new HashMap<String, Object>();
		//判断进行冻结还是还原
		String archivesStatus = flag;
		//根据逗号分割ID
		String[] archivesIds = archivesId.split(",");
		//定义执行结果返回的总数 因为成功返回1，所以把所有执行结果加起来正好就等于ID的总数
		int total = 0;
		//遍历archivesIds数组
		for (int i =0; i < archivesIds.length; i++) {
			//添加ID
			paramMap.put("archivesId", archivesIds[i]);
			//添加要修改的状态
			paramMap.put("useable", archivesStatus);
			//执行
			int result = archivesDao.frozenOrRecoveArchives(paramMap);
			//计数
			total += result;
		}
		//返回计数
		return total == archivesIds.length ? true : false;
	}

	@Override
	public int countArchives(ArchiveVo archivesVo) {
		//调用计数方法
		return archivesDao.countArchives(archivesVo);
	}

	@Override
	public List<Archives> findByclassification(String classification) {
		//查询可分级的基础档案
		return archivesDao.findArchives(classification);
	}

	
	
}
